package cn.cjxy.javaweb.servlet.lifecycle;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 *
 * 生命周期方法
 *              什么时候创建：默认第一次请求创建
 *              什么时候销毁：服务器关闭销毁
 *              会创建几次：一次
 * 方法	                                                         作用	                运行次数
 * 构造方法	                                                在对象实例化的时候执行     	1次
 * void init(ServletConfig config)	                        在初始化的时候执行	            1次
 * void service(ServletRequest req, ServletResponse res)	每次请求都会执行	            n次
 * void destroy()	                                        在服务器关闭的时候            	1次
 *
 *    servlet的执行过程
 *      1. 浏览器发送请求，tomcat接收到请求的地址。通过请求地址找到访问哪个项目，通过最后/hello，找项目中所有的Servlet
 *      2. 通过反射读取每个Servlet中的注解值，匹配到/hello，找到了需要访问的servlet。
 *      3. 通过反射实例化这个Servlet对象
 *      4. 创建request和response对象
 *      5. 并且调用service方法，将request和response对象传递进来。
 *      6. 执行servlet中的代码
 *      7. 将响应的信息封装成response对象返回到浏览器，在浏览器上显示出来。
 * @author huangjie
 * @date 2025/9/29
 */
@WebServlet("/demo1")
public class Demo1 extends HttpServlet {

    public Demo1(){
        System.out.println("构造方法执行了------");
    }

    //初始化方法
    @Override
    public void init() throws ServletException {
        System.out.println("init---------");
    }
    //运行方法
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service---------");

    }
    //销毁方法
    @Override
    public void destroy() {
        System.out.println("destroy---------");
    }
}
